﻿//******************************************************
// 判断类型
//******************************************************
function isAlien(a) {
  return isObject(a) && typeof a.constructor != 'function';
} 
 

function isArray(a) {
  return isObject(a) && a.constructor == Array;
}

function isBoolean(a) {
  return typeof a == 'boolean';
}

function isEmpty(o) {
  var i, v;
  if (isObject(o)) {
    for (i in o) {
      v = o[i];
      if (isUndefined(v) && isFunction(v)) {
        return false;
      }
    }
  }
  return true;
}

function isFunction(a) {
  return typeof a == 'function';
}

function isNull(a) {
  return typeof a == 'object' && !a;
}

function isNumber(a) {
  return typeof a == 'number' && isFinite(a);
}

function isObject(a) {
  return (a && typeof a == 'object') || isFunction(a);
}

function isString(a) {
  return typeof a == 'string';
}

function isUndefined(a) {
  return typeof a == 'undefined';
}

String.prototype.trim = function (){    
  return this.replace(/(^\s*)|(\s*$)/g, "");    
} 

function getChildObjectFrom(o) {
	function F() {}
	F.prototype = o;
	return new F();
}

String.prototype.Tlength = function(){var arr=this.match(/[^\x00-\xff]/ig);return this.length+(arr==null?0:arr.length);}

//字符串左取
String.prototype.left = function(num,mode){if(!/\d+/.test(num))return(this);var str = this.substr(0,num);if(!mode) return str;var n = str.Tlength() - str.length;num = num - parseInt(n/2);return this.substr(0,num);}

//字符串右取
String.prototype.right = function(num,mode){if(!/\d+/.test(num))return(this);var str = this.substr(this.length-num);if(!mode) return str;var n = str.Tlength() - str.length;num = num - parseInt(n/2);return this.substr(this.length-num);}

//字符串包含
String.prototype.GetCount = function(str,mode){return eval("this.match(/("+str+")/g"+(mode?"i":"")+").length");}

//字符串去除两端空字符
String.prototype.Trim=function(){return this.replace(/(^\s*)(\s*$)/g,"");}
String.prototype.Ltrim = function(){return this.replace(/(^\s*)/g, "");}
String.prototype.Rtrim = function(){return this.replace(/(\s*$)/g, "");}

function getCookie(mainKey,subKey) {
 var reg = new RegEXP("(^ )"+mainKey+"=([^;]*)(;$)");
 var arr = document.cookie.match(reg);
 if (arguments.length == 2) {
  if (arr!=null)
   return key(subKey,arr[2]);
  else
   return null;
 } else if (arguments.length == 1) {
  if (arr!=null)
   return unescape(arr[2]);
  else
   return null;
 }

 function key(subKey,findWith) {
  var arr,reg = new RegExp("(^ &)"+subKey+"=([^&]*)(&$)");
  var findWith = findWith?findWith:document.cookie;
  if (arr =  findWith.match(reg))
   return unescape(arr[2]);
  else
   return null;
 }
}

function getQuery(name) {
 var reg = new RegExp("(^&)"+name+"=([^&]*)(&$)");
var r = location.search.substr(1).match(reg)
 if (r!=null) return unescape(r[2]);
}

function DateAdd(strInterval, NumDay, dtDate) {
 var dtTmp = new Date(dtDate);
 if (isNaN(dtTmp)) dtTmp = new Date();
 switch (strInterval) {
  case "s":return new Date(Date.parse(dtTmp) + (1000 * NumDay));

  case "n":return new Date(Date.parse(dtTmp) + (60000 * NumDay));
  case "h":return new Date(Date.parse(dtTmp) + (3600000 * NumDay));
  case "d":return new Date(Date.parse(dtTmp) + (86400000 * NumDay));
  case "w":return new Date(Date.parse(dtTmp) + ((86400000 * 7) * NumDay));
  case "m":return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + NumDay, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
  case "y":return new Date((dtTmp.getFullYear() + NumDay), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
 }
}
// DateDiff("m","2002/12/1 00:00:00","2004/12/1 00:00:00")
function DateDiff(strInterval, dtStart, dtEnd) {
 var dtStart = new Date(dtStart);
 if (isNaN(dtStart)) dtStart = new Date();
 var dtEnd = new Date(dtEnd);
 if (isNaN(dtEnd)) dtEnd = new Date();
 switch (strInterval) {
  case "s":return parseInt((dtEnd - dtStart) / 1000);
  case "n":return parseInt((dtEnd - dtStart) / 60000);
  case "h":return parseInt((dtEnd - dtStart) / 3600000);
  case "d":return parseInt((dtEnd - dtStart) / 86400000);
  case "w":return parseInt((dtEnd - dtStart) / (86400000 * 7));
  case "m":return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1);
case "y":return dtEnd.getFullYear() - dtStart.getFullYear();
 }
}
// b2s("11新浪网!@#程序员_+}{:><")
function b2s(strng) {
 var Matches = strng.match(/[\x21-\x7e]/g);
 for (var i=0;i<Matches.length;i++) {
  strng = strng.replace(Matches[i],String.fromCharCode(Matches[i].charCodeAt (0)+65248))
 }
 return strng;
}



/*Number Object*/
if(!Number.prototype.toFixed) {
 Number.prototype.toFixed = function(n) {

  with(Math) return round(Number(this)*pow(10,n))/pow(10,n)
 }
}
/*Array Object*/
if (!Array.prototype.pop) {
 Array.prototype.pop = function() {
  var lastElement = this[this.length-1];
  this.length = Math.max(this.length-1,0);
  return lastElement;
 }
}
if (!Array.prototype.push) {
 Array.prototype.push = function() {
  for(var i=0;i<arguments.length;i++) {
   this[this.length]=arguments[i];
  }
  return this.length;
 }
}
if (!Array.prototype.shift) {
 Array.prototype.shift = function() {
  var firstElement = this[0];
  this.reverse();
  this.pop();
  this.reverse();
  return firstElement;
 }
}
if (!Array.prototype.splice) {
 Array.prototype.splice = function() {
  var start = arguments[0];
  var deleteCount = start+arguments[1];
  var deleteItem = this.slice(start,deleteCount);
  var beforeItem = this.slice(0,start);
  var afterItem = this.slice(deleteCount);
  this.length=beforeItem.length;
var i;
  for (i=2;i<arguments.length;this[this.length]=arguments[i++]);
  for (i=0;i<afterItem.length;this[this.length]=afterItem[i++]);
  return deleteItem;
 }
}
if (!Array.prototype.unshift) {
 Array.prototype.unshift = function() {
  var arr = new Array();
  for (var i=0;i<arguments.length;arr[i]=arguments[i++]);
  arr = arr.concat(this);
  this.length = 0;
  for (i=0;i<arr.length;this[i]=arr[i++]);
 }
}






